#
#	File:		To Do
#
#	Contains:	to-do list, ideas, & ramblings
#
#	Written by:	Dave Lyons, Andy Nicholas, Jim Murphy, Mike O'Neil
#
#	Copyright:	 1995-1996 by Apple Computer, Inc., all rights reserved.
#
#	Change History (most recent first):
#
#		<14>	  1/2/96	DAL		Assorted changes (while @ Iowa).
#		<13>	 8/30/95	DAL		We already enable and disable keyboard buffering correctly.
#		<12>	 8/30/95	DAL		Various...mostly nuked things that we already did (compare
#									revisions if you care).
#		<11>	  3/1/95	DAL		Remove some fixed stuff.
#		<10>	 2/26/95	andy	Update because we have "Monochrome Graphics" now
#
#

==========================================================================================
Code/Disks/Apps that are known to boot and minimally run:

Last Update by Andy 2/26/95
==========================================================================================

Item								      PowerPC Emulator    C Emulator      68K Emulator

AppleWorks 3.0							  OK				  ????            ????
AppleWorks 4.0							  OK			      ????			  ????
IIGS System Disk 1.1					  OK				  ????			  ????
IIGS System Disk 2.0					  OK				  ????			  ????
IIGS System Disk 3.1					  OK			      ????			  ????
IIGS System Disk 3.2				      OK				  ????			  ????
IIGS System Disk 4.0					  OK				  ????			  ????
IIGS System Disk 5.0					  OK				  ????			  ????
IIGS System Disk 5.0.2					  OK				  ????			  ????
IIGS System Disk 5.0.4					  OK				  ????			  ????
IIGS System Disk 6.0.1					  OK				  ????			  ????
Choplifter+								  OK				  ????			  ????
DazzleDraw  							  OK				  ????			  ????
Jason Harper's FillMaze Fill-Mode demo	  OK				  ????			  ????
Stellar 7								  OK				  ????			  ????
Rastan GS								  OK, hangs while	  ????			  ????
										      playing game		
================
MUST-HAVE Things
================
general application-environment clean-up
--fat app, or at least 68K app apologizes for not being able to run
monitor the volume queue & notice stuff the user has re-mounted that we unmounted (and floppy ejects?)
deal with C030 sound in Fast mode (by slowing down while playing sound?)
Need to support at least simple Ensoniq sound (FFStartSound API minimally)
paddles have to work better, probably by using cycle count (with Pizzazz, for example)
no cursor crap on the screen ever
"Apple II Mouse Mode" solution
implement various missing softswitches
fix a bunch of compatibility bugs
some sort of printing ability, hopefully ImageWriter emulation to any Mac printer &
 serial dumping to a text file
implement missing menu items
work on 640x400 screens (need to hide the Mac menu bar in that case)
----------------

 Application Framework Issues
-AppleScript resources & scriptability
-Update the balloon help for menus; provide additional balloon help
-Do we like our application icon?  Use one of Michele's?
-check system version/etc (Sorry, you need system 7.x)
-fix error handling (search for  and @@@ and %%%)
-Should udpate right away when we bring the window to the front?
-Help system (Apple Guide)
-Warnings/messages system (status window?)

 Gus features
-AppleTalk!
-Make a Status window (modular!)  Hide/show triangles on each section?? Zoom box?
 -show "Gus will run faster on an 8-bit screen/not clipped
 -scrolling message area?  inform of unsupported feature use (keep bitflags & only tell once?)
 -show display mode?
 -speed
 -detailed disk info? (format, size, volname?, current track, write-prot?)
 -menu items for ejecting 5.25 drives (and others, for that matter?) Or GUI only?
 -show border color in status window (because SHR doesn't show it)?
 -HI for rearranging or at least viewing the SmartPort chain
 -HI for ejecting slot 6 drive 1/2

-do a "no yield" mode--take over a whole screen (draw cute monitor around it if large screen)
 and call GetOSEvent (not WNE or GNE)
-provide a real icon for AEIdle proc??
-How to know the GS is safely shut down, with no work to save?
-Need a custom MDEF to show that you need Command-Shift to use the Gus menu items
-Screen-dump FKEY (3?)
-Support opening (but not printing) of SYS programs / S16 programs from the Mac Finder ???
-On a 640x400 screen, hide the menu bar & have some way to get it back?
-Check for system 7 (and test that it bails nicely on older systems)
-Balloon help for the window (tell them what screen mode the emulator is in)
-Display warnings to Gus users when they use software that accesses non-supported
 features of the GS.
-hides Mac cursor on PtInRect--should use FindWindow for compatibility w/ System windows/etc
	(at least when we're in videoDirty mode)
-look for corrupt prefs file; trash it and tell the user?


 Mac menus
-Apple II menu: "Pause" item
-About box
	be sure to credit Jim Luther for the icon
	credit the Double Exposure folks for the AppleTalk / etc code we steal
-Choose GS memory size?
-Configuration (set up slots, etc)
-Save/load an entire emulated system state?
-Print the GS screen
-Save the GS screen to disk as a pict
-Save the GS text screen to disk as a Text file (already has Copy)
-Configure additional option panel keystroke ? (like IIe card)  Cmd-Ctrl-Space may conflict
 with Mac international support.

 Misc Mac stuff
-TMPL resource for preferences (so you can see it in ResEdit)


 Build issues
-Build script: send a Quit AppleEvent to Gus?
-Build IDROUTINE bitmask based on #defines, so we can include various modules
-compress resources in shipping app
-build a fat app (68K+PowerPC in one file)

 Preferences
-preference for sound (disable completely?)
-implement the "install frivolous COPs for speed" preference (currently disabled)
-implement the "allow GS to run Mac code" preference (need a mixed mode scheme)
-Disallow idle on Paddle reads (pref?)
-Pref: allow GS to write to Mac disks?

 Power Cycling mode
-Need a no-idle corner for GS cursor

 Disks
-Attach Battery RAM config (or entire Gus Prefs) to a particular disk image document?
 Or just allow multiple "preference" files??
-Write to 5.25 images (RWTS patch only)
-Try looking for CMP #$D5 or EOR #$D5 (5.25 reading)
-collect track-rotation stats (5.25)
-Mike Weise sez: disk image files, "PCHD", "hdrv", and ???
-do some caching
-5.25 images: get a grip on sector ordering
-5.25 images: speed up nibble reading
-Should not mount the same disk image twice!  Even if it's in the app folder & you drag it onto the app, for example.
-Make DispatchSmartPort return disk-switched errors (see Mustang firmware)
 GS TN #26, page 4: STATCODE = 0, bit 0 of first device status byte is "disk switched" for block devices
-Consider changing DiskCopy creator type to Gus while we're using it, and changing it
 back when we finish updating the checksum.  If the creator type was Gus on mount,
 we would check the checksum and warn them, before using it??
-If there is a IIe card in the system, use the 5.25 drive connected to it

 Video stuff
-Need "composite output" like IIe (so says Eric Soldan)
-Need to clear gCursorHidden, when a Mac system dialog has popped up and shown the cursor
vectorize the video mode stuff & the blitting?
-Cursor sheilding issues!
-hide/show menu bar; clean up window position issues (walk devices)
-Should support non-English TEXT languages (there are 3 bits in a softswitch)
-GSIsTrackingCursor--check that QD & EM are started up (implemented but disabled,
	because of Mac cursor shielding issues)

videoMode =  (13 modes, plus 8 mixed modes)
	dmText40P1
	dmText40P2
	dmText80P1
	dmText80P2
	dmLoResP1					pure/mixed
	dmLoResP2					pure/mixed
	dmDoubleLoResP1				pure/mixed
	dmDoubleLoResP2				pure/mixed
	dmHiResP1					pure/mixed
	dmHiResP2					pure/mixed
	dmDoubleHiResP1				pure/mixed
	dmDoubleHiResP2				pure/mixed
	dmSuperHiRes			(320/640 are not separate modes, since it's line-by-line)

struct VideoInfo VideoAttributes[videoMode] =

VideoInfo:
	short flagbits:
		text-colors, border-color, mixed, page1/2, altcharset, flash, mono
	VoidProcPtr:
		StartUpThisMode (maps memory but does not draw)
			returns info on what rect to redraw (func of oldMode)
			map --> Update single byte
		Flush
		ShutDownThisMode (unmaps memory)
		Update whole screen
		flash-phase redraw, if needed
		AltCharSet redraw, if needed
		new fore/back text color
		new border color

CheckForNewVideoMode
	calls ComputeVideoMode
	updates wTable entries as needed
	updates screen as needed

ComputeVideoMode from
	NewVideo bit 7
	text/grapahics
	rd80col
	pg1/pg2
	lores/hires
	an3 on/off


 Sound
-Volume should be reduced when gus is not the front app?
-When Mac sound volume is zero, we should not make any sound
-Emulate the Sound RAM (done)
-Emulate actually playing sounds from the Sound RAM (much harder)
-Do FFStartSound and maybe a few others.  This gets the Sound control panel stuff,
	the "Apple II" sound, and many apps.  (Maybe even note synth/seq? I don't know.)
-Sound input, from Mac microphone?  How do GS apps read sound from the DOC input??
	Some people actually do that.  HyperStudio does it?
-$C030 clicks
	recognize various code sequences
		integer basic utilities
		GSBug (2 kinds of beeps)
		Davex (standard ProDOS beep?)
		ShrinkIt
		ProTerm?

 General GS features
-Implement logic for fast/2.8MHz/1.0MHz

 Slots
-need a modular slot architecture
-support printing --> Mac printer, text file, etc.
-Do $CFFF / $Cnxx / $C0nx / $C800..CFFE stuff

 Bugs
-QD:Text.asm: Looks like a bug that DoMultiply can return with the carry set.
-C05E/F annunciator in HiRes to get Mono HiRes--gets double hires instead!
-Hires white bits left over after an erase--Sometimes (Pizazz)
 (Does this still happen? 2/26/95 -andy)
-why weird black lines going into & out of Speed demo?  Is this a correct artifact of SCBs/etc?
-Is Big Edit Thing supposed to have 0 0 0 0 0 across the ruler??
-Easy Access crashes during boot. [still?? 30-Aug-95 DAL]
-Weird problem: M68K version won't boot with AppleDisk5.25 driver
	Debug AppleDisk5.25 driver with -m68k -- creates lots of extra DIBs
-What language card mapping is -supposed to be- used during vector pulls? Gus always pulls from the $FF ROM image.

-Fix text shadowing so you can hop from GSBug to Nifty List and back & have it work right [should regress; 12/95]


 Mouse input
-Mouse interrupts implemented at all??  KMSTATUS bit 6 / Interrupts: Mouse interrupt, data interrupt ($C027 bits)
-works only with GS event manager, not with 8-bit programs, etc
-Mouse Clamp issues (including for 640/320...320 only works if clamp.right==320)
-We need an "Apple II Mouse Mode" that you exit with a magic keypress, so we can keep
 reporting mouse deltas through the softswitches when we have no way to tell "where
 the GS cursor is" (even presuming that the mouse is tied to a cursor at all).

 Keyboard input
-Control key should make the arrows repeat faster
-Jim's HD (QuickDebug source, Twlight II stuff), SteveGunn's floppies
-SteveS's "Mouse" source (uses ADB)
-GS_ADBModes bit 0 = disable keyboard autopoll
	;--- ADB micro controler RAM equates:
	; (NOTE:  these are valid for ADB version $06 only!)
	
	mcMicroStatus	equ	$12
	mcStickyBits	equ	$11
	
	mcStickyKeysOn	equ	%00010000		; microStatus bits
	mcMouseKeysOn	equ	%00001000
	
	mcLockedApple	equ	%10000000		; sticky bits
	mcLockedOption	equ	%01000000
	mcLockedControl	equ	%00100000
	mcLockedShift	equ	%00010000
	mcStuckApple	equ	%00001000
	mcStuckOption	equ	%00000100
	mcStuckControl	equ	%00000010
	mcStuckShift	equ	%00000001
	
	mcStuckMask	equ	%00001111
	mcLockMask	equ	%11110000
-Note that the GS-interrupt-time event queue wandering is not technically safe.
	What to do?? Is is -really- a problem?  I walk the event queue to see if
	pending keys should really be offered to $C000 (avoid helping the event
	manager overflow itself)
-Character $B8? Not PI?  $E0 ""  $F0 "Apple" (pasting)
-Steal the Mac Reset/Power key (replace ADB service routine when Gus is front app?)

 Quality Assurance
-general instruction set test suite
-cycle counting tests
-softswitch tests
-display mode tests
-test PowerMgr stuff (various COP selectors)
-Do we have #ifdef GUSBUG for all FastOpcodeBank stuff?
-Can Gus net print?

 Memory Map
-Optimizing writing to the screen holes (wText40)?
-Should split out graphics/SCB/ctable portions of wE0_RAM -- this will speed things up!
-fix GetHostRead/WriteAddress to use rTable/wTable (pretty good now? 24-Dec-95 DAL)
-Need an rGarbage memory reader (for empty slots, and certain softswitches?)

 Softswitches
-implement more softswitches (list the missing ones here)
	Mega II stuff is not implemented on the (real) GS
	$C063 = shift key, on IIe only
	Test softswitches documented as read-only or write-only to see how they really work
	Get the right bits read-only in all softswitches
	INTCXROM
	INTC3ROM
	SCC direct access
	horizontal/vertical video counters
	shadow register (some bits already implemented)
	more IWM direct access (plus DISKREG)
-several kinds of interrupts are not implemented yet??  Sound, _____.

 65816 emulator, PowerPC version

 65816 emulator, M68K version
-68K memory accessors (byte, word, three, ?)
-do fast-D, fast-S in 68K
-update 68K stuff (double hires memory accessors, etc)
-no jump tables in 68K code
-68K memory accessors (byte, word, three, ?)
-Optimize flag setting on DEX/etc (Need:  ClearNZ, FastSetNZ16, FastSetNZ8 based on 68K
	flags)  Use "ClearNZ; add.b #1,X+1; FastSetNZ16"?

FastDataBank pointer--points to Mac host address of $bb/0000
FastOpcodePage pointer--points to PC page in Mac memory (inval on SetMemWriters)

btst #knownEA,PReg	;knownEA --> Mac address in Ax
beq.s @slow

LoadByteEA
LoadWordEA
StoreByteEA
StoreWordEA

-dispatcher--clear knownEA
-certain instructions--check knownEA
-certain opcode handlers--set knownEA

 Dynamic compilation of 65816 code?
-Need a 32-bit GS address spec which includes the 24-bit GS address plus an 8-bit encoding
 of the memory mapping for that address range at the time (probably just the entry from the
 rTable).  This keeps track of different ROM/LangCard banks, for example.

 65816 emulator, C version
-816.c, push_word/pull_word stuff is a little ugly.  Weird else's, etc.  When to really recompute fast stack?
-FastRAMBank for data bank (like FastOpcodeBank for PC)
-FastStack? when 3 bytes above and below S are "fast"
-use push_three and pull_three (to be ready in case Andy wants to do FastStack later)
-816.c: fix paren spacing; fix abs_byte to use FastOpcodeBank if no Gusalyzer?
-Change all SetZ to SetZ8 or SetZ16 (not necessary, just cosmetic)
-See notes in GS Hardware Ref 2nd Ed, page 45 (make sure we're doing it right when it matters)
-Insert a bunch of FIX_gsPC macros into 816.c?
-Change some "& 0xFFFF" to FixWord() ? (Only when the data type is really a word, not long.)
-Rearrange opcode table to be like the PowerPC asm version?

 Gusalyzer
-Type = Disable.  Type = End Trace & Start Stepping
-Break on Nth occurance
-SPEED demo crashes in About box if memory is initialized to zero
-Pop-up for begin/center/end
-Show cycle count in Gusalyzer
-Invalidate Gusalyzer window when we cross the displayed area
-Do live stepping w/ space bar (and fix clicking in the window?)
-PPC version is off by one instruction in the trace
-BRK: expect 0 operand bytes (or fetch one, so display is correct)
-branches: show ??? for operand (or fetch the operands in Gusbug mode?)
-show $???? for branches where the offset was never fetched
-need more room for the text version of the tool call, etc.
-use PenMode(hilite); (instead of lomem bits)
-put gusalyzer support back into PowerPC code
-*WARNING* slow clock
-disasm/state capture, with search; trigger points, begin/center/end/stop traces
-profile by address, instruction, cycle
-break on memory state, processor state, instructions executes, cycles executes, whatever
	(break on access to nonexistent memory; or specifically opcode fetch from nonexistent memory)

 GS ROM and Patching
-gus--ff/1c40 info (return pointer from a COP)
-Unimplemented COPs should act like 00..7F-range COPs ??
	-change CoolCopHandler to return a flag if the COP is unimplemented --> should break like a regular COP ???
-Toolbox dispatch COPs should not include the RTL (want to be able to step over most of them in GSBug)
-Looks like shield/unshield cursor are good things to speed up (better than multiply)
-Make the GS monitor disassemble COPs correctly?
-Make Nifty List disassemble COPs correctly? (and GSBug?)
 	 to do that, we need a COP (or something) to return info about how many bytes a given COP takes up
-MenuManager fall-down menu check broken (ldy $2 should be #2, @fd5ffc)
-Patch the 8-meg-RAM5 problem in the ROM MM ???  Look for other >8M problems??
-figure out where to patch LoadOneTool/LoadTools/StartUpTools to patch one RAM-based toolset
-ROM 3 Menu Manager...add a WaitUntil delay? On scrolling? On blinking??
-change COPs to never modify gsPC
-Have COP $8B count event queue size? (and keep the answer for later, for keyboard stuff??)
-Patch the 8-meg-RAM5 problem in the ROM Memory Manager ???  Look for other >8M problems??
-figure out where to patch LoadOneTool/LoadTools/StartUpTools to patch one RAM-based toolset
-speed up stuff in QD:Text.asm (note, Looks like a bug that DoMultiply can return with the carry set)
-$FFF6/7 = checksum tweak (make ROM add up to $1234?)
-Things to look at speeding up:
	MM:Mover
	FindHandle goes pretty dang slow (see ~m)  MM:Search?
	Other Memory Manager routines
	MOVE_INFO (GS/OS version + ROM version?)
	ROM interrupt handler
	QuickDraw
		razor routines
		region routines (init, seek)
		DrawCursor
		UndrawCursor
	Set System Speed?
	Slot Arbiter?
	text routines (standard scrolls, clears)
	E1/0198 standard vector (monitor internal routines)
	Speed up scroll, clreol?

 Applesoft stuff to speed up
-LINSRCH (d944, d61e)
-multiply by 10 and add digit (DA20)
-token dispatch (D828)
-main loop (D7D2) various pieces
-PTRGET (DFE3) various pieces, including the search-by-7-bytes stuff (E073)
-replace (LDA PHA LDA PHA with PEI NOP NOP NOP NOP when possible--when it doesn't want A or P)
-DE23 (push FAC?)
-EC4A (zero FAC?)
-EB66 (copy FAC?)
-E874 (normalize?)
-DE47 (pull FAC?)
-E903 loop & surrounding (addition?)
-EB2E (copy value to variable)

 RAM-based patching
-GSIdleUpdate: P8 & GS/OS file-level read/write calls (how to hook in?)
-GSIdleUpdate: track WaitCursor/SetCursor (handle one level of GSDisableIdle)
-SystemTask/FakeMouse thing
	may need to check the mouse clamps
	need to check that QD+EM are active

 Paddle input
-Soldan needs to be able to read paddle values as high as 559 (for Pizzazz)
-need a more robust human interface?  4 paddles?
-If there is a IIe card in the system, use the joystick connected to it
-Joystick scaling assumes main screen
-Support Mac mouse button = Joystick button 1?
-joystick code is using SANE doubles...is this what we want?

 Clipboard
-Clipboard window needs scroll bars
-Convert: sound, text, graphics (to/from Mac clipboard); use Mac Translation Manager
-Clipboard translation: Text/Style; PICT; Sound (import/export clipboard?? or automatic?)
-Edit menu: Copy to GS Clipboard, Copy From GS Clipboard ???

 Possible Features
-Gus should pass the GS self test, with as little mucking with the test as possible.
-AppleGuide coaching for GS applications?  Including the GS Finder.
-Make Mac fonts available to the GS Font Manager
-We might be able to do Apple II Video Overlay Card functions, using the features on AV Macs
-BalloonHelp: force a GS FindWindow; COP $xx --> HMShowBalloon, HMRemoveBalloon
-AppleGuide hooks to the GS side: Get OS type; get versions (P8, GS/OS, QD, QD->SysDisk(?); current app;
 pass request code to GS; get named window/dialog/dialog item/named control; get Finder icon (path/name/etc)
-Scriptable!  Define AppleEvents & aete.
-How to drag text *out* of Gus?
-COPs for tool dispatcher should work differently in RAM somehow, so that when
	GSBug tries to trace into a tool dispatch, it doesn't just crash the GS.
-Gus FST: Needs Gus Device driver
	(works like AppleShare to give inserts, ejects, and read/write access?)
	FST just makes Device Driver calls.  Device driver makes COP calls, or
	else has imbedded Mac code?
	--Can create GS devices dynamically??
	--The Mac devices will not be available from ProDOS 8.
	--Imbed the device driver inside the FST?
-Dynamic COP assignment scheme?
 allocate, dispose of $xxxx words for COP $D0 $xxxx
 Each word binds to a mac mixed-mode routine descriptor
-Mixed-mode interface scheme?  Execute Mac routine descriptor,
 with GS state accessible through a Mac register?
-Expansion card stuff. Do a slinky card (from IIe card?)  Study their modular architecture.
-Turn off all interrupt sources when we hit $FF59???
-Fully support "shadow in all RAM banks?" bit?  Greg Templeman may be releasing a product
 that uses this mode.  It would be a pretty severe pain.  [already support SHR shadowing in all RAM banks]

 Gus ERS Material
-[done] copy text (40 or 80 columns)
-[done] Paste text (to $C000)
-Gus ERS: Serial ports, AppleTalk, COPs
-GS Features to NOT SUPPORT
  Shadow in all RAM banks ($C0xx, bit _)
  Inhibit Language Card shadowing ($C0xx, bit _)
  Nonlinear Super Hi-Res memory
  Bank latch off ($C029 bit 0 = 0)
-COP stuff
  COP $$FF = address-dependent
  COP $Cn = reserved for slot number N (9..F = external slots)
-Document all the non-faithful aspects of our emulation (in Gus ERS)
-Connections between emulation and reality (some of these are done already)
  disk devices (SmartPort --> mac disk images, mac floppy, other mac partitions)
  mouse / mouse card? (mouse works with GS Event Manager)
  video displays
  AppleTalk (emulate at some level?)
  printer cards
  serial ports (emulate through to Comm Toolbox?)
  Sound (speaker clicks, DOC)
  real-time clock (works, both reading and writing Mac time)
  Mac menu items for special keys (like Reset)
  Battery RAM (in Gus Preferences)

 Dynamic Recompilation
-must use 32-bit tokens that do rTable|addr (that is, an address needs to incorporate the
 memory mapping that lets you read it)
-AppleSoft probably spends a lot of time doing little direct-page loops
-fastdp/fast stack --> banks 0, 1, e0, e1??
-can definitely do ROM code
-to compile code from RAM, need to intercept writes through wTable to flush cache,
 and don't do RAM code in bank 0/1/e0/e1 (because of FastDirectPage interactions?)
-Must count the cycles!  Should we limit the number of cycles, or loop iterations, that
	happen inside one DR block, so that we return frequently enough to WNE/etc?
-Can collapse the computation of intermediate condition codes
-Can collapse stack reads when the entire result is ignored (PLA PLA PLA PLA, etc)
-Can collapse step-by-step arithmetic, such as INC, INC, INC; INY INY INY (etc)
-Can collapse code sequences into primative routines (PEA PLB PLB --> SetB/P constant, etc)
-How can we *really quickly* determine whether to compile a block of code?
	Do we have to do this check on every non-DR instruction dispatch?
-Must bail out of DR block if we happen to remap memory so that code disappeared from under us
-The code analysis engine needs to model the following:
	HighA, LowA, X, Y, P, S, B, D, K, PC, cycle-count, 
	list of updated memory contents
		(as in LDA #, STA, LDA #, STA --> store to memory and just load A/P once at the end)
-DR blocks need to keep track of:
	entry point
	environment-assumptions (m, x, e, decimal, fastdp, faststack, memory-map-states?, B register?)
	flush priority (relink list in LRU order? --> doubly-linked list)
-Some kinds of code do not need to do arbitrary memory accesses, and these are easier:
	immediate-mode loads/compares/arithmetic
	register transfers, SEC/CLC/etc
	stack access only (nn,s; pushes and pulls)
	24-bit operands that access RAM/ROM
	16-bit operands with a FastRAM/ROM B value
	fast-direct-page accesses
	watch for certain sorts of sequences (PEA PLB PLB), *or* model the stack in general
	Watch for video writes, and defer a group of them until much later??
-Interesting sequences (highly incomplete list):
	PEA PLB PLB
	PHA PLB PLB
	[LDX/Y#] DEX [LDA] [STA] [CPX/Y] BPL/BNE


 Code-level stuff
-general code review
-collect globals into structures
-use "static" more, for functions local to one file
-816.c: fix paren spacing; fix abs_byte to use FastOpcodeBank if no Gusalyzer?
-special_debug -- now takes a pstring??
-SpeedRegister should go somewhere clean (.h, etc)


 Uncategorized stuff

GS SSW features needed by Gus: Finder should query FST for its name (Macintosh FST, etc)

Andy--Sleep for Gus: only write out the banks that have been initialized
--patch MM so it doesn't touch every bank
--rFastRAMFirstTime
--wFastRAMFirstTime
--SetK --> initialize the bank

Menu item for ejecting disks, controlling sound?, controlling speed <and AppleEvents>

=============================
